#导入第三方库
import time
scale = 40
print("执行开始".center(scale//2, '-'))
start = time.perf_counter()
start1 = ("{:.2f}".format(start))
print("开始时间：", start1)
#导入第三方库
import random
# 创建字典
dict = {}
#添加15个键值对，匹配35-100的随机整数，random.randint()用于生成一个指定范围内的整数
dict['A'] = random.randint(35, 100)
dict['B'] = random.randint(35, 100)
dict['C'] = random.randint(35, 100)
dict['D'] = random.randint(35, 100)
dict['E'] = random.randint(35, 100)
dict['F'] = random.randint(35, 100)
dict['G'] = random.randint(35, 100)
dict['H'] = random.randint(35, 100)
dict['I'] = random.randint(35, 100)
dict['J'] = random.randint(35, 100)
dict['K'] = random.randint(35, 100)
dict['L'] = random.randint(35, 100)
dict['M'] = random.randint(35, 100)
dict['N'] = random.randint(35, 100)
dict['O'] = random.randint(35, 100)
#输出原始字典
print(dict)
#运用dict.items()，得到包含 键、键值的元组
dict1 = (dict.items())
#sorted(指定序列，排序规则，升/降序），sorted默认对键从小到大排序；
# key=lambda变量;
# key=lambda x: x[1] 为对前面的对象中的第二维数据（即键值）进行排序;
# x[0]是对象的一维数据（即键），x是元组;
# reverse=False升序，reverse=True降序。
dict2 = (sorted(dict1, key=lambda x: x[1], reverse=True))
#按照学生成绩降序排列输出字典
print(dict2)
#导入第三方库，引入PrettyTable模块，设计数据表格
from prettytable import PrettyTable
x = PrettyTable()
#按列输入数据
x.add_column('姓名', ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'])
x.add_column('成绩', [dict.get('A'), dict.get('B'), dict.get('C'), dict.get('D'), dict.get('E'), dict.get('F'), dict.get('G'), dict.get('H'), dict.get('I'), dict.get('J'), dict.get('K'), dict.get('L'), dict.get('M'), dict.get('N'), dict.get('O')])
#输出数据表
print(x)
#提取键值
dict3 = (dict.values())
#求平均值,len()返回容器中项目的数目
average = sum(dict3)/len(dict3)
#平均值保留两位小数
scores = ("{:.2f}".format(average))
#输出平均分数，居中对齐
print("平均分："'{0:^10}'.format(scores))
max1 = max(dict3)
max2 = ("{:.2f}".format(max1))
#输出最高分数，居中对齐
print("最高分："'{0:^10}'.format(max2))
min1 = min(dict3)
min2 = ("{:.2f}".format(min1))
#输出最低分数，居中对齐
print("最低分："'{0:^10}'.format(min2))
#提取分数小于60的键值
selected = [x for x in dict3 if x in range(0, 60)]
#统计不及格的人数
number = len(selected)
#使用逗号，将元素拼接在一起
print("不及格人数:", number, "人")
#输入学生姓名，输出学生成绩
a = input("输入学生姓名：")
b = dict.get(a)
if a not in list(dict.keys()):
    print("请输入正确的学生姓名")
else:
    print(a, ":", b, "分")
#根据输出的成绩，判断等级
    if b < average :
        print("该生成绩属于下等水平")
    elif b > average :
        print("该生成绩属于上等水平")
    else:
        print("该生成绩属于中等水平")
end = time.perf_counter()
end1 = ("{:.2f}".format(end))
print("结束时间：", end1)
dur = end - start
dur1 = ("{:.2f}".format(dur))
print("运行时间:", dur1, "S")
print("\n"+"执行结束".center(scale//2, '-'))